import configparser
from config.config import *
from utils.decoractors import singleton

"""
该类属于文件操作的类，在读取mysql配置文件，消息通知配置文件都会使用到
可以考虑使用单例模式
"""

@singleton
class GetConfig:
    def __init__(self):
        self.cfg = configparser.ConfigParser()

    def get_database_data(self,database):
        """
        获取mysql所有的节点和值
        """
        self.cfg.read(environment_ini_path,encoding="utf-8")

        #如果想要使用dict函数，必须要保证数据是列表嵌套的元组[()]
        data = dict(self.cfg.items(database))
        data["port"] = int(data["port"])
        return data

    def get_base_url(self,url):
        """
        获取基础的不同环境的url
        :param url: ini文件里的url节点名
        """
        self.cfg.read(environment_ini_path,encoding="utf-8")
        data = dict(self.cfg.items(url))
        return data.get("base_url")

    def get_message_dingding(self):
        """
        获取钉钉消息通知相关配置
        """
        self.cfg.read(message_ini_path,encoding="utf-8")
        data = dict(self.cfg.items("dingding"))
        return data

    def get_message_email(self):
        """
        获取邮件消息通知相关配置
        """
        self.cfg.read(message_ini_path,encoding="utf-8")
        data = dict(self.cfg.items("email"))
        data["recipients"] = eval(data["recipients"])
        return data

    def get_message_report_path(self):
        """
        获取消息通知测试报告路径相关配置
        """
        self.cfg.read(message_ini_path, encoding="utf-8")
        data = dict(self.cfg.items("report"))
        return data


if __name__ == '__main__':
    print(GetConfig().get_database_data("test_database"))
    print(GetConfig().get_base_url("test_base_url"))



    # print(GetConfig().get_message_dingding())
    # print(GetConfig().get_message_email())
    # print(GetConfig().get_message_report_path())